<?php
//Ultima verificacion: 13-10-2014 ; 04-11-2014 ; 21-11-2014 ; 20-02-2015 (Ultima verificacion)
class M_localidad extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las localidades existentes menos las borradas (La provincia padre debe estar activa)
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT localidad.*, provincia.nombre AS provincia, 
											DATE_FORMAT(localidad.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(localidad.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM localidad, provincia
									  WHERE localidad.idProvincia=provincia.idProvincia AND 
											provincia.estado=1 AND 
											localidad.estado<>-1 $restriccion
									  ORDER BY localidad.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener las localidades activas. Solo devuelve las localidades activas de una provincia activa.
	//(La provincia padre debe estar activa)
	function buscarActivos($restriccion=null){
		$consulta = $this->db->query("SELECT localidad.*, provincia.nombre AS provincia, 
											DATE_FORMAT(localidad.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(localidad.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM localidad, provincia
									  WHERE localidad.idProvincia=provincia.idProvincia AND 
											provincia.estado=1 AND 
											localidad.estado=1 $restriccion
									  ORDER BY localidad.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar una localidad
	function eliminar($idLocalidad=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `localidad` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `localidad`.`idLocalidad` = " . $this->db->escape($idLocalidad) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una localidad
	function crear($nombre=null, $idProvincia=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `localidad` (`idLocalidad`,`nombre`,`idProvincia`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
												  (NULL,".$this->db->escape($nombre).",".$this->db->escape($idProvincia).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
		
	//Este metodo se utiliza cuando queremos devolver una localidad en particular usado generalmente en el formulario de modificar o bien para
	//validar que una localidad pasada por la url sea existente.
	function get($idLocalidad=null){
		$consulta = $this->db->query("SELECT localidad.*
									  FROM localidad, provincia
									  WHERE localidad.idProvincia=provincia.idProvincia AND
											localidad.estado<>-1 AND 
											provincia.estado<>-1 AND
											localidad.idLocalidad=".$this->db->escape($idLocalidad)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver la localidad contigua a una en particular usado generalmente en el formulario de modificar
	function getContiguo($idLocalidad=null, $cant=null, $idProvincia=null){
		if($idProvincia == 0){
			do{
				$idLocalidad+=$cant;
				$consulta = $this->db->query("SELECT localidad.*, provincia.estado AS estadoProvincia
											  FROM localidad, provincia
											  WHERE localidad.idProvincia=provincia.idProvincia AND
													localidad.idLocalidad=".$this->db->escape($idLocalidad)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoProvincia=='-1');
		}else{
			do{
				$idLocalidad+=$cant;
				$consulta = $this->db->query("SELECT localidad.*, provincia.estado AS estadoProvincia
											  FROM localidad, provincia
											  WHERE localidad.idProvincia=provincia.idProvincia AND
													localidad.idLocalidad=".$this->db->escape($idLocalidad)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoProvincia=='-1' || $consulta->row()->idProvincia != $idProvincia);
		}
			
		return($consulta->row()->idLocalidad);
	}
			
	//Este metodo se utiliza para modificar una localidad
	function modificar($idLocalidad=null, $nombre=null, $idProvincia=null, $estado=null){
		$consulta = $this->db->query("UPDATE `localidad` 
									 SET `nombre` = ". $this->db->escape($nombre) .",
									     `idProvincia` = ". $this->db->escape($idProvincia) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `localidad`.`idLocalidad` = " . $this->db->escape($idLocalidad) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>